home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
015
/
ed_print.bas
< prev
next >
Wrap
BASIC Source File
|
1985-05-04
|
8KB
|
211 lines
10 REM THIS PROGRAM WAS WRITTEN AS A TEST BED FOR MY GEMINI-10X, HOWEVER
20 REM IT MAY BE OF SOME USE AS A GEN PURPOSE UTILITY FOR THOSE OF YOU
30 REM THAT DO NOT HAVE A PRINT UTILITY. IF IT WERE COMPILED IT MAY BE
40 REM A VERY GOOD PROGRAM (ONCE SPEEDED UP).
50 REM STEVE/ESSY/CRYSTAL FRISBY 4 MAY 1985
60 CLEAR 500: DEFINT A-Z
70 DIM TF$(1),PM$(11),PM(11)
80 SCREEN 0,1:COLOR 15,1:WIDTH 80:KEY OFF
90 PW=1
100 PL=2
110 LM=3
120 RM=4
130 TM=5
140 BM=6
150 LS=7
160 NF=8
170 TF=9
180 PZ=10
190 FF=11
200 RD=0:VW=40
210 TF$(0)="NO": TF$(1)="YES": PN$="Page"
220 FOR I=1 TO 11: READ PM$(I):NEXT I
230 DATA Page width
240 DATA Page length
250 DATA Left margin
260 DATA Right mgn.
270 DATA Top margin
280 DATA Bottom mgn.
290 DATA Line space
300 DATA Number pgs
310 DATA Title pgs
320 DATA Pg-pause
330 DATA Skip headings 1st pg
340 FOR I=1 TO 11: READ PM(I):NEXT I
350 DATA 80
360 DATA 66
370 DATA 5
380 DATA 5
390 DATA 3
400 DATA 6
410 DATA 1
420 DATA 1
430 DATA 0
440 DATA 0
450 DATA 1
460 FF$=CHR$(12)
470 CR$=CHR$(13)
480 LF$=CHR$(10)
490 TB$=CHR$(9)
500 BS$=CHR$(8)
510 SP$=" "
520 HY$="-"
530 CC$=FF$+CR$+LF$+TB$+BS$+SP$
540 CLS
550 INPUT"Which DRIVE is the Source File on [ A or B ]";SF$
560 FILES SF$+":"
570 INPUT"Print which file"; FI$
580 FI$=SF$+":"+FI$
590 ON ERROR GOTO 1290
600 OPEN FI$ FOR INPUT AS 1
610 PRINT:PRINT "Print to which.....S=screen P=lpt:?"
620 FO$=INKEY$
630 IF FO$="S" OR FO$="s" OR FO$="P" OR FO$="p" THEN 640 ELSE 620
640 CLS: FOR I=1 TO 7: IZ$=STR$(I):PRINT USING "\ \";IZ$;" ";:PRINT PM$(I)" ="PM(I):NEXT I
650 FOR I=8 TO 11: IZ$=STR$(I):PRINT USING "\ \";IZ$;" ";:PRINT PM$(I)" = "TF$(PM(I)):NEXT I
660 S=0:PRINT:INPUT"Change no.1-11 (RETURN=none)";S
670 IF S=0 THEN 710
680 IF S>=1 AND S<=7 THEN PRINT:PRINT"Enter a new value for '"PM$(S)"'";:INPUT PM(S):GOTO 640
690 IF S>=8 AND S<=11 THEN PRINT "'"PM$(S)"' (YES/NO)";:INPUT S1$: IF S1$="YES"OR S1$="yes" THEN PM(S)=1 ELSE IF S1$="NO" OR S1$="no" THEN PM(S)=0
700 GOTO 640
710 LW=PM(PW)-PM(LM)-PM(RM): TL=PM(PL)-PM(BM):LM$=STRING$(PM(LM),SP$)
720 CLS: IF PM(TF)=1 THEN PRINT "Enter a title, max"LW"chars.":PRINT:PRINT:LINE INPUT TI$: TI$=LEFT$(TI$,LW)
730 IF FO$="P" OR FO$="p" THEN CLS:GOTO 1350
740 C$="":B$="":PN=0
750 COLOR 15,0:WIDTH 80:CLS:PRINT " PAGE 1":GOTO 860
760 PRINT"_____________________________________________________________________________":REM BOTTOM BOTDER
770 IF EOF(1) THEN PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED"
780 IF FO$="P" OR FO$="p" THEN 860
790 IF EOF(1) OR PM(PZ)=1 THEN PRINT:PRINT "E=exit P=lpt: N=new file SPACE BAR=next page":BEEP:ELSE 860
800 RD$=INKEY$
810 IF RD$="E" OR RD$="e" THEN CLS:KEY ON:FILES:END
820 IF RD$="P" OR RD$="p" THEN FO$="P":PN=PN-1:GOTO 1350
830 IF RD$="N" OR RD$="n" THEN RUN
840 IF RD$=" " THEN 860
850 GOTO 800
860 FOR T=1 TO 4:PRINT:NEXT:PRINT "_____________________________________________________________________________":REM TOP BORDER
870 PN=PN+1: LN=0
880 IF PN=RD THEN BEEP:PN=PN-1:IF EOF(1) THEN 790 ELSE 1490
890 IF LN<PM(TM) THEN GOSUB 1200: GOTO 890
900 IF PN=1 AND PM(FF)=1 THEN 930
910 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1210:GOSUB 1200
920 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1200:LK=1:GOSUB 1240
930 IF EOF(1) THEN 1060
940 IF LN>=TL THEN 1160
950 C1$=C$: C$=INPUT$(1,1)
960 ON INSTR(1,CC$,C$) GOTO 1060,1080,1100,1120,1150,1190
970 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
980 IF CP<LW THEN WF=0: GOTO 930
990 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
1000 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1000
1010 HP=HQ:S=1:SP=0
1020 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1020
1030 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
1040 IF BP=0 THEN GOSUB 1220: GOTO 930
1050 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1220:B$=B1$:CP=LEN(B$):GOTO 930
1060 AF=0:WF=0:IF B$>""THEN GOSUB 1220
1070 GOTO 1160
1080 IF WF=0 THEN GOSUB 1220ELSE WF=0
1090 GOTO 930
1100 IF C1$=CR$ OR AF=1 OR WF=1 THEN 930
1110 GOSUB 1220: GOTO 930
1120 I1=8-CP MOD 8: I2=LW-CP
1130 TB=-(I1<I2)*I1-(I2<=I1)*I2
1140 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 980
1150 B$=B$+C$:CP=CP-1:WF=0:GOTO 930
1160 IF PM(NF)=1 THEN GOSUB 1260:BH$=" "+PN$+STR$(PN)+".":COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT BH$: LN=LN+1
1170 IF LN<PM(PL) THEN GOSUB 1200: GOTO 1170
1180 GOTO 760
1190 IF CP=0 THEN 930ELSE 970
1200 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT "":LN=LN+1:RETURN
1210 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$BH$:LN=LN+1:RETURN
1220 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$;
1230 PRINT B$:LN=LN+1: B$="":CP=0:LK=1
1240 IF LK<PM(LS) AND LN<TL THEN GOSUB 1200: LK=LK+1: GOTO 1240
1250 RETURN
1260 IF LN<PM(PL)-3 THEN GOSUB 1200:GOTO 1260
1270 RETURN
1280 CLS
1290 PRINT
1300 IF ERR=53 THEN PRINT "FILE ";CHR$(34)+FI$CHR$(34);" NOT LISTED":GOTO 570
1310 IF ERR=25 THEN PRINT"PRINTER ERROR!":PRINT:PRINT"TURN ON PRINTER, HIT ANY KEY";
1320 ER$=INKEY$:IF ER$=""THEN 1320
1330 IF ER$<>""THEN 1360
1340 END
1350 REM BEGINNING OF PRINTER ROUTINE
1360 SCREEN 0,1:COLOR 14,6:CLS
1370 CLOSE:C$="":B$="":CP=0:LK=1
1380 PRINT"PRINTER SETTINGS:":PRINT:PRINT
1390 PRINT "Pause between pages? Y/N"
1400 RD$=INKEY$
1410 IF RD$="Y" OR RD$="y" THEN PM(PZ)=1:GOTO 1440
1420 IF RD$="N" OR RD$="n" THEN PM(PZ)=0:GOTO 1440
1430 GOTO 1400
1440 PRINT:INPUT "Start printing at page number";RD
1450 IF RD<2 THEN 1480
1460 IF RD>=2 THEN CLOSE 1:OPEN FI$ FOR INPUT AS 1:GOTO 740
1470 GOTO 1440
1480 OPEN FI$ FOR INPUT AS 1
1490 COLOR 14,6:CLS:PRINT:PRINT"EMPHASIZED print....Y/N ?"
1500 RD$=INKEY$
1510 IF RD$="Y" OR RD$="y" THEN LPRINT CHR$(27);CHR$(69):GOTO 1540
1520 IF RD$="N" OR RD$="n" THEN LPRINT CHR$(27);CHR$(70):GOTO 1540
1530 GOTO 1500
1540 OPEN"LPT1:"FOR OUTPUT AS 2
1550 PRINT
1560 INPUT "Align paper then press ENTER",RD$:PRINT
1570 IF EOF(1) THEN GOSUB 2040:WIDTH 80:KEY ON:CLOSE:PRINT:PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED":PRINT:FILES:BEEP:END
1580 IF PM(PZ)=1 THEN PRINT "E=exit program SPACE BAR=print page.";PN+1:ELSE 1630
1590 RD$=INKEY$
1600 IF RD$=" " THEN 1630
1610 IF RD$="E" OR RD$="e" THEN CLOSE:COLOR 15,0:CLS:KEY ON:FILES SF$+":":END
1620 GOTO 1590
1630 PN=PN+1: LN=0
1640 IF LN<PM(TM) THEN GOSUB 1950: GOTO 1640
1650 IF PN=1 AND PM(FF)=1 THEN 1680
1660 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1960:GOSUB 1950
1670 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1950:LK=1:GOSUB 1990
1680 IF EOF(1) THEN 1810
1690 IF LN>=TL THEN 1910
1700 C1$=C$: C$=INPUT$(1,1)
1710 ON INSTR(1,CC$,C$) GOTO 1810,1830,1850,1870,1900,1940
1720 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
1730 IF CP<LW THEN WF=0: GOTO 1680
1740 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
1750 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1750
1760 HP=HQ:S=1:SP=0
1770 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1770
1780 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
1790 IF BP=0 THEN GOSUB 1970: GOTO 1680
1800 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1970:B$=B1$:CP=LEN(B$):GOTO 1680
1810 AF=0:WF=0:IF B$>""THEN GOSUB 1970
1820 GOTO 1910
1830 IF WF=0 THEN GOSUB 1970ELSE WF=0
1840 GOTO 1680
1850 IF C1$=CR$ OR AF=1 OR WF=1 THEN 1680
1860 GOSUB 1970: GOTO 1680
1870 I1=8-CP MOD 8: I2=LW-CP
1880 TB=-(I1<I2)*I1-(I2<=I1)*I2
1890 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 1730
1900 B$=B$+C$:CP=CP-1:WF=0:GOTO 1680
1910 IF PM(NF)=1 THEN GOSUB 2010:BH$=" "+PN$+STR$(PN)+".":PRINT#2,BH$: LN=LN+1
1920 IF LN<PM(PL) THEN GOSUB 1950: GOTO 1920
1930 GOTO 1570
1940 IF CP=0 THEN 1680 ELSE 1720
1950 PRINT#2,"":LN=LN+1:RETURN
1960 PRINT#2,LM$BH$: LN=LN+1:RETURN
1970 IF B$>"" THEN PRINT #2,LM$;
1980 PRINT#2,B$:LN=LN+1: B$="":CP=0:LK=1
1990 IF LK<PM(LS) AND LN<TL THEN GOSUB 1950: LK=LK+1: GOTO 1990
2000 RETURN
2010 IF LN<PM(PL)-4 THEN GOSUB 1950:GOTO 2010
2020 RETURN
2030 END
2040 PRINT:PRINT"DO YOU WANT ANOTHER COPY Y/N ?"
2050 RD$=INKEY$
2060 IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
2070 IF RD$="N" OR RD$="n" THEN COLOR 15,0:CLS:RETURN
2080 GOTO 2050
2090 END
IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
2070 IF RD$="N" OR RD$="n" THEN C